// 枚举算法
// 假设水果大礼包 1 的选法有 x 种，对应的水果大礼包 2 的选法有 y 种
// 那么最大利润 max = x * a + y * b
// 类似这种二元一次方程组的题目就需要用到枚举算法，因为我们无法直接直到 x 的取值以及 y 的取值
// 要求方程的最大值，可以依次枚举 x 的取值，对应计算 y 的取值，有了 x 和 y，就能计算最大值
// 注意，题目输入的参数取值范围非常大，因此参数相乘的结果 int 是存不下的，所以需要定义为 long

import java.util.Scanner;

public class FruitGiftPack {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        long n = in.nextInt();
        long m = in.nextInt();
        long a = in.nextInt();
        long b = in.nextInt();

        long maxValue = 0;
        for(int i = 0; i <= Math.min(n / 2, m); i++){
            maxValue = Math.max(maxValue, i * a + Math.min(n - 2 * i, (m - i) / 2) * b);
        }

        System.out.println(maxValue);
    }
}
